import { create, Font } from 'fontkit'

const buffer = await fetch('https://s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/e3dfe524.woff')
  .then((e) => e.arrayBuffer())
  .then((e) => Buffer.from(e))

const font = create(buffer) as Font

// 简洁版本 - 只获取关键轮廓信息
const outlines: { unicode: string; num: number }[] = []

const map = [
  {
    num: 0,
    path: 'M26 243Q26 334 43 386Q62 440 98 469.5Q134 499 189 499Q269 499 310 435Q330 406 341 361Q352 319 352 243Q352 199 348 163Q344 127 334 100Q315 46 279.5 16.5Q244 -13 189 -13Q117 -13 75 39Q26 101 26 243ZM89 243Q89 119 117.5 78.5Q146 38 188.5 38Q231 38 260 79Q289 120 289 243Q289 366 260.5 407Q232 448 189 448Q146 448 120 412Q89 366 89 243Z',
  },
  {
    num: 1,
    path: 'M258 -4L196 -4L196 388Q174 367 137.5 346Q101 325 73 314L73 373Q124 397 163 432Q182 449 196 466Q210 483 218 499L258 499Z',
  },
  {
    num: 2,
    path: 'M349 55L349 -4L18 -4Q18 18 25 39Q32 56 41.5 72.5Q51 89 65 105.5Q79 122 99 140.5Q119 159 146 181Q186 215 214 241Q242 267 256 287Q285 326 285 361.5Q285 397 258.5 422.5Q232 448 189 448Q146 448 119.5 422Q93 396 92 347L29 354Q36 426 78 462.5Q120 499 192 499Q264 499 306 459Q348 419 348 360Q348 328 336.5 301Q325 274 295 239Q281 223 257.5 201Q234 179 200 151Q172 128 154.5 112.5Q137 97 129 88.5Q121 80 115 72Q109 64 103 55Z',
  },
  {
    num: 3,
    path: 'M88 137Q98 84 123 61Q148 38 186 38Q229 38 258.5 68Q288 98 288 141.5Q288 185 260 212.5Q232 240 190 240Q172 240 147 233L154 287L164 286Q204 286 235 307Q266 328 266 370Q266 404 244 426Q222 448 185 448Q148 448 124.5 426.5Q101 405 94 358L32 369Q43 432 83.5 465.5Q124 499 183 499Q223 499 258 481.5Q293 464 311.5 433.5Q330 403 330 369Q330 335 312.5 309Q295 283 260 267Q305 257 329.5 225Q354 193 354 144Q354 78 306 32.5Q258 -13 186 -13Q119 -13 75.5 26Q32 65 26 128Z',
  },
  {
    num: 4,
    path: 'M223 -4L223 116L6 116L6 172L234 497L284 497L284 172L352 172L352 116L284 116L284 -4ZM223 172L223 398L66 172Z',
  },
  {
    num: 5,
    path: 'M90 132Q97 84 122.5 61Q148 38 186 38Q231 38 262 72Q293 106 293 160Q293 214 262.5 244Q232 274 186 274Q155 274 132 260.5Q109 247 95 225L36 232L85 490L334 490L334 431L134 431L107 297Q130 312 153.5 320Q177 328 202 328Q267 328 312.5 283Q358 238 358 166Q358 99 318 48Q270 -13 186 -13Q118 -13 75 25.5Q32 64 26 127Z',
  },
  {
    num: 6,
    path: 'M284 370Q275 406 260 422Q235 448 199 448Q169 448 147 432Q118 410 102 370Q93 350 88.5 321Q84 292 84 254Q106 288 138 304.5Q170 321 206 321Q267 321 310.5 275.5Q354 230 354 158Q354 111 333.5 70.5Q313 30 278 8.5Q243 -13 197 -13Q120 -13 71.5 43Q23 99 23 230Q23 376 76 442Q123 499 202 499Q262 499 299.5 466Q337 433 345 375ZM94 158Q94 127 107.5 97.5Q121 68 145 53Q169 38 196 38Q234 38 262.5 69.5Q291 101 291 155Q291 206 263 236.5Q235 267 194 267Q153 267 123.5 237Q94 207 94 158Z',
  },
  {
    num: 7,
    path: 'M29 431L29 491L354 491L354 442Q330 417 306.5 383Q283 349 259 307Q235 265 217.5 222Q200 179 186 134Q169 71 163 -4L99 -4Q100 25 106 61Q112 97 123 139Q145 223 186 300Q207 340 229.5 372.5Q252 405 275 431Z',
  },
  {
    num: 8,
    path: 'M120 267Q45 295 45 370Q45 426 84 462.5Q123 499 189 499Q255 499 295 460Q335 421 335 368Q335 295 260 267Q307 252 331 219Q355 186 355 139Q355 74 309.5 30.5Q264 -13 190 -13Q116 -13 70.5 30Q25 73 25 141Q25 190 49.5 223Q74 256 120 267ZM108 372Q108 335 131 313Q154 291 190 291Q224 291 248 313Q272 335 272 368Q272 401 248.5 424.5Q225 448 189 448Q153 448 130.5 425.5Q108 403 108 372ZM88 141Q88 113 100 89Q112 65 138 51Q162 38 190 38Q213 38 231 45.5Q249 53 263 67Q292 94 292 138.5Q292 183 262.5 212Q233 241 189 241Q145 241 116.5 212.5Q88 184 88 141Z',
  },
  {
    num: 9,
    path: 'M94 117Q102 75 123 56.5Q144 38 177 38Q207 38 227.5 51Q248 64 261.5 85.5Q275 107 285 144Q289 162 291.5 181Q294 200 294 219L294 224Q294 228 293 232Q276 202 244 184Q212 166 174 166Q111 166 68.5 211Q26 256 26 331Q26 406 70.5 452.5Q115 499 183 499Q231 499 272 473Q313 447 334 397.5Q355 348 355 257Q355 160 334.5 103.5Q314 47 272.5 17Q231 -13 176 -13Q116 -13 79 20Q42 53 35 112ZM287 333Q287 386 258.5 417Q230 448 189.5 448Q149 448 119 415Q89 382 89 328Q89 279 118 249.5Q147 220 189.5 220Q232 220 259.5 250.5Q287 281 287 333Z',
  },
]

for (let codePoint of font.characterSet) {
  const glyph = font.glyphForCodePoint(codePoint)
  const unicode = `&#x${codePoint.toString(16).toLowerCase().padStart(4, '0')}`
  const path = glyph.path.toSVG()
  const num = map.find((e) => e.path === path)?.num ?? null

  if (num !== null) {
    outlines.push({ unicode, num })
  }
}

outlines.sort((a, b) => a.num - b.num)

console.log(outlines)
